package com.atguigu;

/**
 * 懒汉式(线程安全，同步方法)
 *
 * @author melo
 */
public class Singleton06 {

    private static volatile Singleton06 instance;

    private Singleton06() {

    }

    /**
     * 提供一个静态的公有方法，加入双重检查代码，解决线程安全问题, 同时解决懒加载问题
     * double check现在是种反模式，不推荐使用
     *
     * @return 单例对象
     */
    public static synchronized Singleton06 getInstance() {
        if (instance == null) {
            synchronized (Singleton06.class) {
                if (instance == null) {
                    instance = new Singleton06();
                }
            }

        }
        return instance;
    }
}
